﻿using System;
using System.Threading;

namespace BarrierDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 Barrier 实例，指定参与线程数量  
            Barrier barrier = new Barrier(4);

            // 启动多个线程，每个线程执行一些工作后触发信号并等待其他线程  
            for (int i = 0; i < 4; i++)
            {
                new Thread(() =>
                {

                    Console.WriteLine($"线程 {Thread.CurrentThread.ManagedThreadId} 开始工作。");
                    Thread.Sleep(1000);       // 模拟工作耗时  
                    barrier.SignalAndWait();  // 通知所有其他线程并等待它们  
                    Console.WriteLine($"线程 {Thread.CurrentThread.ManagedThreadId} 工作完成，所有线程已同步。");

                }).Start();
            }
        }
    }
}
